36VPS Vybrané partie z operačních systémů
36VPS, přednáší ing. Šimánek Odkazy Stránky na serveru os Slajdy z přednášek Materiály ze cvičení Category: Faculty of Electrical Engineering Proč tato stránka vznikla *Aby poskytla výtah z výukových materiálů, odpovědi na minulé zkouškové otázky a pomohla tak při přípravě na zkoušku. Kontrolní otázky ze cvičení Týden 1. K čemu slouží soubor /etc/passwd ? * Je v něm uloženo UID každého uživatele [ANO] * Jsou tam uložena hesla pro přístup přes WWW a FTP NE * Je to program ke změně hesel uživatelů tohle je soubor v adresari /etc nikoliv program passwd * Je v něm uloženo GID primární skupiny každého uživatele [ANO] * Jsou v něm uloženy některé atributy uživatelů (název domovského adresáře) [ANO] * Jsou v něm uložena hesla uživatelů kdysi v něm bývalo hash hesla, dnes je z bezpečnostních důvodu v /etc/shadow * Je v něm uložen seznam uživatelů [ANO] Který uživatel má v operačních systémech UNIX administrátorská práva? (Jak takového uživatele poznáte?) * Právě ten, který má GID nulové GID s tim vůbec nesouvisí * Právě ten, který má UID nulové [ANO] * Právě ten, kterému to dovolil prezident republiky, popř. generální ředitel dané organizace NE * Právě ten, který má buď UID nulové nebo GID nulové musí mít UID 0 na GID nezáleží * Právě ten, který patří do skupiny "root" s GID=0 NE * Právě ten, jehož uživatelské jméno (login name) je "root" hlavní je UID * Právě ten, který má UID nenulové NE Týden 2. K čemu je užitečný runlevel S (singleuser mode)? * Používají ho běžní uživatelé k zamezení přístupu ze sítě (pokud chce uživatel pracovat jen sám). Lze použít jen z konzole. * Je automaticky aktivován při výpadku napájení. * Je obdobou volby "jen systém MSDOS" a znamená, že počítač pracuje naprosto stejně, ale bez grafického prostředí. * Používá ho administátor k odstanění zvlášť závažnách chyb systému. Spravne Jakým příkazem lze zastavit WWW server? * service httpd stop * killall -HUP httpd * /etc/rc.d/init.d/www kill * killall www * killall httpd * /etc/init.d/httpd stop * service www stop * kill /etc/init.d/httpd * service httpd stop Spravne * /etc/rc.d/init.d/www stop Jaké PID má démon init * vždy 0 * menší než 0 * 42 * 1 Spravne * vetsi nez ! Mohou v jednom okamžiku běžet současně dva procesy init (/sbin/init)? * Ano Spravne * Ne * Ano, ale jen když byl každý z těchto procesů spuštěn v jiném adresáři * Ano, ale jen když každy z těchto procesů pustil jiný uživatel Kterým příkazem lze změnit runlevel? * setrunlevel * runlevel * init Spravne * who -r * telinit Spravne Jak vzika proces init (demon) * pri startu systemu ho vytvori jadro * je prvnim procesem systemu, vytvori sam sebe * je spusten ze shellu * jako kazdy jiny proces, volanim systemove funkce fork() * je spusten pri startu systemu z nektereho rc-scriptu v /etc/rc.d * je spusten pri prihlaseni uzivatele Týden 3. Co je to /dev/md1 ? * Takový soubor neexistuje. * Speciální soubor reprezentující logický disk, který je vytvořen pomocí volume manageru. ANO * Speciální soubor, reprezentující fyzický disk, konkrétně první partition. Kolik primary partition lze vytvořit na jediném disku na platformě PC/x86? * libovolný počet, ale jen pokud existuje extended partition * 255 * žádnou, promary partitions nelze použít na počítači PC. * 4 ANO * 2 * 1 * 42 Jakým programem se obvykle mění tabulka rozdělení disku? * dd * fdisk ANO * partitionedit * newfs * mount Týden 4. Jakým příkazem odpojíme kořenový systém souborů * kill / * Kořenový systém souborů nelze za běhu OS odpojit ANO * rmdir / * detach / * umount / Jakého typu je soubor /dev/null? * neexistující soubor * symbolický link, který ukazuje na "nic" * socket * znakové zařízení ANO * nepojmenovaná roura * pojmenovaná roura Který konfigurační soubor obsahuje seznam systémů souborů, které se mají připojit při startu systému? * /etc/mtab * /bin/mount * /etc/fstab ANO * /proc/mounts * /etc/fsmount Kterým programem lze provést kontrolu systému souborů typu ext2? * fsck ANO * dump * checkfs * repairfs * mke2fs Týden 5. Které z těchto balíčků jsou nutné pro spuštění nainstalovaného editoru jstar ? * stdlib * ncurses * XFree86-libs * glibc * libc Postup: whereis jstar rpm -qf /usr/bin/jstar for i in `rpm -q --requires joe`; do echo $i; rpm -q --whatprovides $i; done Jakému balíčku patří soubor /usr/lib/X11/locale/iso8859-2/Compose * XFree86-Mesa-libGL * xorg-x11-libs * xorg-font-iso8859-2 * xorg-font-utils * XFree86-ISO8859-2-100dpi-fonts Postup: rpm -qf /usr/lib/X11/locale/iso8859-2/Compose Jaké capabilities nabízí balíček glib ? * libresolv-2.3.2.so * libglib-1.2.so.0 * libgmodule-1.2.so.0 * glibc-2.3.2.so Postup: rpm -q --provides glib Jaká informace je uvedena v položce Vendor v informacích o balíčku ntp? * David L. Mills * none * Red Hat, Corp. * Red Hat * Red Hat, Inc. Postup: rpm -qi ntp Týden 6. Lze využít program tar pro vytvoření komprimované zálohy domovských adresářů? * Ne * Ne, zálohu domovských adresářů nelze komprimovat. * Ano, ale jen spolu s komprimačním programem gzip * Ano, ale jen spolu s nějakým (libovolným) komprimačním programem [ANO, např. gzip,bzip2, ...] Jaké soubory obvykle označují následující přípony? Poznámky: Příponu .Z používá utilitka compress, zálohování probíhá tak, že nejprve se soubory zabalí do taru (zachovají se cestu, práva, čas, atd.) a výsledný tar se zabalí komprimačním programem. Většina unixových komprimátoru předpokládá, že komprimují pouze jeden soubor (náš *.tar). * .Z - soubor komprimovaný programem gzip * .Z - soubor komprimovaný programem bzip * .tgz - soubory komprimované programem gzip a následně archivované programem tar * .tar.Z - soubory komprimované programem compress a následně archivované programem tar * .tar - archiv vytvořený programem tar [ANO] * .tgz - archiv vytvořený programem tar a následně komprimovaný programem gzip [ANO] * .Z - soubor komprimovaný programem zip * .Z - soubor komprimovaný programem compress [ANO] * .tar.gz - soubory komprimované programem gzip a následně archivované programem tar * .tar.Z - archiv vytvořený programem tar a následně komprimovaný programem gzip * .Z - soubor komprimovaný programem zip * .tar.gz - archiv vytvořený programem tar a následně komprimovaný programem gzip [ANO] * .tgz - nekomprimovaný archiv vytvořený programem tgz Mezi hlavní výhody zálohovacího programu dump (oproti tar, nebo cpio) patří zejména: * Rychlejší zálohování. [ANO] * Zachování času posledního přístupu k souboru během zálohování. [ANO] * Podpora inkrementálního zálohování. [ANO] * K zálohování nejsou třeba root práva. Mezi hlavní výhody zálohovacího programu tar (oproti dump) patří zejména: * Automatická komprese dat. * Zachování času posledního přístupu k souboru během zálohování. * Možnost interaktivní obnovy. * Rychlejší zálohování. Tady jsem nic nezatrhnul, protože pokud to mají oba není to výhoda a z nabízených možností nemá tar nic lepšího než dump. Týden 7. Jak lze jádru Linuxu předat informace o tom, kde má hledat kořenový systém souborů ? * Parametrem jádra mount= * Parametrem jádra /= * Parametrem jádra root= [ANO] * Nastavením implicitní hodnoty přímo v jádře ještě před bootem programem rdev [ANO] * Parametrem jádra mount / Kde lze v systému Linux nalézt informace o všech PCI zařízeních v počítači? * V souboru /proc/pci [ANO] * Podle existence speciálních zařízení v /dev: Přítomnost např. hardware ABC zjistíme podle existence souboru /dev/ABC * V různých souborech v adresáři /dev * V souboru /etc/pci Které volby (konfigurační přepínače) je třeba nastavit při konfiguraci jádra, chceme-li číst (tj. namountovat) běžné CD-ROM disky na SCSI CD-ROM mechanice. * CONFIG_ROMFS_FS (ROM file system support) * CONFIG_BLK_DEV_SR (SCSI CDROM support) [ANO] * CONFIG_CD_NO_IDESCSI (Support non-SCSI/IDE/ATAPI CDROM drives) * CONFIG_CHR_DEV_SG (SCSI generic support) [NE] * CONFIG_EXT3_FS (Ext3 journalling file system support) * CONFIG_ISO9660_FS (ISO 9660 file system support) [ANO] Týden 8. Jak zakážete použití dodatečných nastavení pro specifický adresář (tj. nastavení běžně definovaná v souborech .htaccess) ? * Uvedením direktivy AccessFileName .cokoliv, což způsobí přenastavení jména přístupového souboru na jméno začínající tečkou, které je skryté * Uvedením direktivy NoAccessFile * Uvedením direktivy AllowOverride None [ANO] * Uvedením direktivy UserAccessFile None V čem se liší virtuální server na bázi jmen od virtuálního serveru na bázi IP adres? * Virtuální servery na bázi IP adres vyžadují minimálně tolik různých IP adres, kolik je virtuálních serverů, zatímco servery na bázi jmen tolik adres nevyžadují. [ANO] * Virtuální servery na bázi IP adres fungují i bez platného DNS záznamu, zatímco virtuální servery na bázi jmen jsou bez DNS záznamu (případně jiné ekvivalentní služby - NIS, NIS+, LDAP) nedostupné. [ANO] * Virtuální servery na bázi jmen fungují dobře i s nižšími verzemi protokolu HTTP (ver 1.0 a starší) * Virtuální servery na bázi jmen musí používat dohromady jen jedinou IP adresu, zatímco servery na bázi IP adres mohou (a mají) adresy navzájem různé. * Virtuální servery na bázi IP adres musí běžet každý na jiném počítači, neboť používají jiné (různé) IP adresy. Mějme následující CGI script: #!/bin/bash echo "Content-type: text/plain" grep root /etc/passwd /etc/blbost Označte všechny příkazy, které je nutné vložit do tohoto scriptu mezi příkazy echo a grep, aby script zobrazoval v prohlížeči stejné informace, jako to dělá stejný příkaz grep na příkazové řádce. * umount /usr * echo "MIME-type: text/plain" * exec 2>&1 [ANO] * export TERM=vt100 * exit 0 * echo "" echo " " echo " " echo " " echo " " Navíc by se mělo tělo HTML dokumentu uzavřít i po skončení příkazu grep. * g) export DISPLAY=:0.0 * h) echo "Document-encoding: ascii" * i) echo "" [ANO] Týden 9. Srovnejte spojení pomocí ssh proti spojení pomocí telnet/rsh/rlogin, za předpokladu že nebudu používat (myšleno: předem nevyměním ani nijak neověřím) ani veřejné klíče počítačů, ani veřejné klíče uživatelů. V čem jsou rozdíly? * Spojení je skoro celé šifrované, ale pokud by útočník odposlechl všechny přenesené pakety (zejména počáteční dohadování klíčů), pak by mohl spojení rozluštit. * rsh/rlogin umožňuje nastavit přihlašování bez hesla (a autentizovat pomoci souboru .rhosts) narozdíl od ssh, které bez veřejných klíčů takto (autentizaci na zaklade pouhych neoverenych IP adres) nastavit nejde. * Při spojení ssh lze (i bez použití veřejných klíčů) vytvořit další zabezpečený (šifrovaný) TCP kanál (ssh tunel), který se dá využít pro jiné aplikace. * Spojení ssh je po celou dobu šifrované, nelze ho tedy v odposlechnout pouhým odposlechem paketů. Proč je výhodnější použít ssh místo rsh, nechceme-li používat autentizaci uživatele pomocí hesla? * Při SSH přístupu nemusí server důvěřovat IP adrese ani klíči počítače ze kterého se hlásí, ale může ověřit uživatele podle veřejného klíče uživatele. * Při SSH má Klient jistotu, že komunikuje se správným serverem (pokud má k dispozici správný klíč). * Protokol SSH může automaticky zprostředkovat spojení s X-serverem. * Celé SSH spojení je šifrované, tj. ani odposlech všech paketů (včetně inicializačních) nepostačí k rozluštění přenášené informace. Jak zabezpečíte protokol pop3 (čtení vzdálené pošty) pomocí ssh tunelu proti odposlechu? Řekněme, že POP3 server se jmenuje sss, lokální počítač se jmenuje ccc a uživatel má přístup na server sss pod USERNAME=uuu. Po vytvoření tunelu bude client používat adresu localhost a port 8888. * ssh -l uuu -L 110:sss:8888 sss * ssh -l uuu -L 8888:sss:110 ccc * ssh -l uuu -L 110:sss:8888 ccc * ssh -l uuu -L 8888:ccc:110 ccc * ssh -l uuu -R 8888:sss:110 ccc * ssh -l uuu -R 8888:sss:110 sss * ssh -l uuu -L 8888:sss:110 sss [ANO] * ssh -l uuu -R 110:ccc:8888 sss * ssh -l uuu -R 110:sss:8888 sss * ssh -l uuu -R 8888:ccc:110 ccc * ssh -l uuu -R 110:ccc:8888 ccc * ssh -l uuu -L 8888:ccc:110 sss * ssh -l uuu -L 110:ccc:8888 sss * ssh -l uuu -R 110:sss:8888 ccc * ssh -l uuu -L 110:ccc:8888 ccc * ssh -l uuu -R 8888:ccc:110 sss Týden 10. Co je nutné ke zřízení domény 2. řádu (xxxxxx.cz) na vlastním DNS serveru? (tak, aby byla viditelná ze světa) * Nakonfigurovat alespoň adresu www.domena.cz * Vytvořít jeden primární DNS server, sekundární nejsou potřeba. * Registrovat doménu u Internetové autority NIC-CZ, nebo zprostředkovaně přes jiný subjekt. [ANO] * DNS server(y) musí být připojeny stálým spojem (24 hodin denně, nikoliv např. dial-up s dynamickou IP). [ANO] * Vytvořit minimálně dva nezávislé primární (master) DNS servery. Kdo je vlastníkem domény kytara.cz ? * Webhosting s.r.o. * Libor Smékal [ANO] * Milan Šimánek * Fidel Castro * Jan Nedvěd whois kytara.cz Který soubor musíte změnit, aby na vašem počítači bylo jméno pokus.felk.cvut.cz překládáno na adresu 192.168.1.1 ? * /etc/hosts [ANO] * /var/named/felk.zone * /bin/ls * /etc/named.conf Zkouškové otázky 2005/2006 Co je to CORE, k čemu se používá, jak zabráníme jeho vytvoření? obsahuje stav procesu v době jeho pádu, je to dobré k ladění chyb. Jeho vytvoření zabráníme např. nastavením resource limitu na 0, nebo vytvořením adresáře core Kde je uloženo jméno souboru ? (možnosti i-node, datový blok, superblok) V datovém bloku adresáře. V jakém formátu je uložen v jádře čas? Longint sekundy od 1.1.1970 Jaký je rozdíl mezi knihovní funkcí a funkcí jádra? Uveďte od každé 3 příklady. funkce jádra běží v privilegovaném modu. funkce jádra: open, read, write knihovní funkce: fopen, fread, fwrite,... Kde je uloženo NICE číslo procesu ? (možnosti v paměťové časti procesu, ve sdílené paměti jádra) Proč tomu tak musí být? Je uloženo v paměti jádra v tabulce procesů. NICE je statická priorita procesu. Musí to tak být protože proces může zapisovat kdekoliv do své paměti a mohl by si tak libovolně měnit prioritu. Může na jeden soubor ukazovat více filedescriptorů? Ano může. Jaký formát mají filedescriptory ? (možnosti struct, integer, pointer) Integer Může nějaký proces číst/zapisovat z/do souboru, aniž by ho předtím otevřel? Proč? Ano, může pokud zdědí filedescriptor od předka Co je to SetUID bit ? K čemu se používá ? Jmenujte alespoň 2 příklady kdy je nenahraditelný. Je to vlastnost souboru, je uložený v i-nodu, program může získat práva vlastníka souboru. Příklady nenahraditelnosti: /bin/su, /bin/passwd, /bin/ping (posilani ICMP paketu) Kolik i-nodů a kolik datových bloků obsahuje : soubor, adresář, symbolický link, blokové zařízení ? Vždy uveďte min a max počet. i-node dat. bloky min max min max soubor 1 1 0 x adresář 1 1 1 x symb. link 1 1 1 1, teoreticky i více blokové zař. 1 1 0 0 Co jsou to privilegované instrukce ? Jmenujte alespoň 3 privilegované a 3 neprivilegované instrukce. Jsou to instrukce které se mohou vykovávat pouze v privilegovaném módu procesoru. Privilegované: halt, in, out Neprivilegované: mov, add, sub, div, shl, jmp Příkazy: a) cat /etc/passwd a b) cat < /etc/passwd - jak je provede shell? a) shell | + fork()| | exec("/bin/cat", "/etc/passwd") | wait() b) shell | + fork()| | close(0); | fopen("/etc/passwd"); | exec("/bin/cat"); wait() Když zadá místo /etc/passwd /etc/passwdx, jaká bude chybová hláška. takže u a) něco jako cat: cannot open file, b) shell: cannot open file Co je to ULIMIT vlastnost procesu, nastavuje omezení na: počet potomků, velikost core, počet file descriptorů Možnosti meziprocesorové komunikace. Sdílená pamět, fronta zpráv, semafor, zprávy, pipe, signály Lze zakomponovat funkci sinus do jádra? Lze Lze vyjmout funkci getuid z jádra a jedná se o privilegovanou funkci? Nejedná, ale potřebuje přistupovat k některým datům, které jsou uvnitř jádra, takže vyjmout ji nelze Funkce kill Slouží k zasílání signálu. Parametry jsou číslo signálu a PID. Lze zaslat buď konkrétnímu procesu nebo skupině - podle toho PID Jaké jsou standartní reakce na signály ukončení, ukončení s core, ignorování, zastavení, pokračování ale lze si předdefinovat vlastní handlery pomocí signal Které signály nelze zachytit? KILL, STOP Může zabírat symbolický link více než jeden datový blok? Teoreticky může, ale stačí mu jeden. Dva procesy (každý na jiném terminálu). Jak můžou komunikovat přes pipe? A: mkfifo("jmeno") … chtěl vedet, ze alokuje i-node ve filesystemu A: fd1 = open("jmeno", "r") … chtěl vědět ze fd1 je int B: fd2 = open("jmeno", "w") A: write( fd1, co, kolik) … musí tam být kolik B: read( fd2, co, kolik) Když spustím B dříve => error. Takže se to řeší tak ze A musí B poslat signál. Co dělá příkaz NOHUP a která systémová volání použije? NOHUP PRIKAZ - zajistí pokračování PRIKAZu i po mém odhlášení (No HangUp) Kolik je v Linuxu signálů a) <10 b) <100 c) 2^32 d) záleží na velikosti swap signálů je něco mezi 20 a 30 Co je to ACL? Access Conrol List. Rozšiřuje práva souboru, pomoci těchto listů se může nastavit, který konkrétní uživatel do toho kterého souboru může zapisovat, číst atd.. Co delaji volani kill, exec, dup, fork, ... Co je to core a co to obsahuje Co je to i-node, kde se nachazi a co obsahuje Jakym prikazem se provadi kontrola filesystemu ufs, ext2, nfs Sdilena pamet mezi procesy - jak se vytvori, jak se pouziva Signaly - jak predefinovat handlery;co se stane,kdyz nejsou definovane; uvest priklad ctyr signalu a reakci na ne ARP protokol jak nastavit quoty, quota Stickybit (kde se pouzije=napr. u adresare temp) UMASK jak se spousti, kecy okolo Nakreslit strukturu inode-datova oblast Zeptal se treba, kde je ulozenej korenovej adresar Meziproc. kom. : starej znamej priklad: tar | gzip , mel jsem to nakreslit a popsat. Co udela if(exec("/bin/ls")) printf("BLA -1") else printf ("BLA -2") Co udela printf("VYPIS %d",fork()); Co udela if (fork()) exit(); Jsou nejake specialni file descriptory? Mam adresar root v nem 100mb soubor AA hardlink HH a symbolicky link SS nakreslete jak to bude usporadano (cylinder group, tabulku inodu, pak inode od root, souboru AA a toho symbolickeho linku), datove bloky od (root,AA,SS). To ze soubor ma 100Mb je tam proto, ze jsou pak potreba na data ukazatele 0,1,2 urovne (to ze me vypacil pri zkousce). Co se stane pri rm HH: snizi se o 1 pocet hardlinku v inodu a smaze se HH z root zaznamu o jmenech soubotu Pipe na urovni jadra, jak to funguje (pak se ptal na pojmenovanou pipe). Vyjmenujte alespon 4 signaly Proces s PID 1, kdy vznika, co dela, odkud cte konfiguraci. rozdil mezi tar a dump - hrozne se divil, ze kdyz jsem ve cviceni odpovedel, ze si to nepamatuju. identifikace procesu EUID, ... procfs jak jdou po sobě: kernel, shell, bootloader, init, shell, getty, login, rc skripty a ls Jaka je navratova hodnota exec nebo co vlastne exec udela? Exec prepise vykonny kod, takze se premaze ten puvodni. ls | grep ddd 2>&1 | wc –l Mame 4 sitova spojeni a chceme je obslouzit pak taky chceme cekam na reakci z klavesnice, jak to vsechno udelat. Musi to byt pasivni cteni, tedy ne v cyklu. Zde staci odpoved, select - tim lze udelat uplne vse, jsou i jene moznosti napr pool (nebo neco takovyho)